package com.bestcem.xm.member.service.dto;

import com.alibaba.fastjson.annotation.JSONField;
import com.bestcem.xm.label.grpc.service.param.LabelValueIdParam;
import com.bestcem.xm.label.service.dto.LabelValueDTO;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;
import org.springframework.util.ObjectUtils;

/**
 * @author ming.xue <ming.xue@idiaoyan.com>
 * @desc 标签值标识
 * @date 2021-07-21
 */
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class LabelValueIdDTO {
    /**
     * 标签值标识
     */
    private String id;

    /**
     * 标签标识
     */
    @JsonProperty("label_id")
    @JSONField(name="label_id")
    private String labelId;

    /**
     * 标签名称
     */
    private String labelName;

    /**
     * 标签值
     */
    private String value;

    /**
     * 创建标签值标识对象
     *
     * @param id
     * @param labelValue
     * @return
     */
    public static LabelValueIdDTO of(String id, LabelValueDTO labelValue) {
        LabelValueIdDTO labelValueIdParam = new LabelValueIdDTO();
        // 设置标签值标识，标签值标识不可为空
        labelValueIdParam.setId(id);

        // 根据需要填充附加信息，如标签标识、标签组标识、标签名称等
        if (labelValue != null) {
            labelValueIdParam.setLabelId(labelValue.getLabelId());
        }
        return labelValueIdParam;
    }

    @Override
    public int hashCode() {
        return ObjectUtils.nullSafeHashCode(id);
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }

        if (!(obj instanceof LabelValueIdParam)) {
            return false;
        }

        LabelValueIdParam labelValueIdParam = (LabelValueIdParam) obj;
        return ObjectUtils.nullSafeEquals(id, labelValueIdParam.getId());
    }
}
